package com.cy.features;

import java.util.ArrayList;
import java.util.List;

/**
 * 泛型？
 * 1 泛型是什么？
 * 泛型是编译时的一种类型，用于约束类中属性，方法参数，返回值类型，运行时无效。
 * 2 泛型的应用场景？
 * 写框架 写工具类 写通用方法
 * 3 泛型应用类型
 * 3.1 类泛型 语法  类名或者接口名 <泛型>(class Class<T>{},class ClassB<K,V,P,D>)
 * 类泛型约束类中的实例属性，飞静态方法参数，非晶态返回值类型
 * 3.2方法约束：语法-><泛型>方法返回值类型<泛型>  方法名
 * 方法泛型应用最多的场景是静态方法(static <T>void print(T t){})
 * 4泛型限定通配符
 * 4.1？ 无界通配符
 * 4.2？super   下界限定通配符
 * 4.3?extends 上界限定通配符
 */
public class GenerricTest01 {
    //类泛型
    static class Containter<E>{
        void add(E t){}
        E get(){
            return null;}
    }
    //方法泛型 T extends 通常用于获取值
    static <T extends Number>void print(T t){}
    /*
    泛型方法 ？super 只能应用于存数据
     */
    static <T> void show(List<? super String> t){}
    public static void main(String[] args) {
        print(100);
        //show("A");
        List<String> list=new ArrayList<>();
        show(list);
    }

}
